package com.wayhome.srpingbootmybatis.policy.service;

import com.wayhome.srpingbootmybatis.config.ApiResult;
import com.wayhome.srpingbootmybatis.policy.dto.PolicyDocDTO;
import com.wayhome.srpingbootmybatis.policy.dto.ReqPolicyDocDTO;
import com.wayhome.srpingbootmybatis.policy.dto.ReqPolicyDocFileDTO;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface PolicyDocService {

    /**
     * 新增政策文件
     *
     * @param policyDocDTO 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    ApiResult<Boolean> insertPolicyDoc(PolicyDocDTO policyDocDTO) throws Exception;

    /**
     * 查询政策列表
     * @param reqPolicyDocDTO 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    ApiResult<List<PolicyDocDTO>> queryList(ReqPolicyDocDTO reqPolicyDocDTO) throws Exception;

    /**
     * 查询政策详情，包括文件
     * @param reqPolicyDocDTO 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    ApiResult<PolicyDocDTO> queryDocDetail(ReqPolicyDocDTO reqPolicyDocDTO) throws Exception;
    /**
     * 更新政策文件
     *
     * @param policyDocDTO 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    ApiResult<Boolean> updateDoc(PolicyDocDTO policyDocDTO) throws Exception;

    /**
     * 上传文件
     *
     * @param file 文件
     * @return 返回结果
     * @throws Exception 异常信息
     */
    void importDocFile(MultipartFile file) throws Exception;

    /**
     * 上传文件
     *
     * @param request 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    ApiResult<Boolean> uploadDocFile(ReqPolicyDocFileDTO request) throws Exception;

    /**
     * 作废政策文件
     *
     * @param policyDocDTO 请求参数
     * @return 返回结果
     * @throws Exception 异常信息
     */
    ApiResult<Boolean> deleteDoc(PolicyDocDTO policyDocDTO) throws Exception;

    /**
     * 下载文件
     * @param reqPolicyDocDTO 请求参数
     * @throws Exception
     */
    void downloadPolicyFile(ReqPolicyDocDTO reqPolicyDocDTO) throws Exception;
}
